//
//  Decorator.swift
//  ZhuangShiPattern
//
//  Created by mac on 2017/11/9.
//  Copyright © 2017年 RRC. All rights reserved.
//

import Foundation

//修饰的抽象类
public class Decorator:SchoolReport {

    //首先我要知道是哪个成绩单
    private let sr:SchoolReport
    //通过构造函数，传递成绩单过来
    init(sr:SchoolReport) {
        self.sr = sr
    }
    //成绩单还是要被看到的
    func report() {
        self.sr.report()
    }
    //看完还是要签名的
    func sign(name: String) {
        self.sr.sign(name: name)
    }
}

//最高成绩修饰
public class HighScoreDecorator:Decorator{
    //构造函数
    override init(sr:SchoolReport) {
        super.init(sr: sr)
    }
    
    //我要汇报最高成绩
    private func reportHighScore(){
        print("这次考试语文最高是75, 数学是78, 自然是80")
    }
    
    //重写父类方法
    override func report() {
        self.reportHighScore()
        super.report()
    }
}

//排名情况修饰
public class SortDecorator:Decorator{
    //构造函数
    override init(sr: SchoolReport) {
        super.init(sr: sr)
    }
    //行诉老爸学校的排名情况
    private func reportSort(){
        print("我是排名第38名...")
    }
    //重写父类方法
    override func report() {
        super.report()
        self.reportSort()
    }
}
